//
// Created by xuda on 25-7-16.
//

#include <stdio.h>
#include <termios.h>
#include <unistd.h>

// 获得一个字符，不回显
int getch()
{
    struct termios tm, tm_old;
    // 获得用户输入的属性 tm_old
    tcgetattr(0, &tm_old);
    // 获取原始输入的属性
    cfmakeraw(&tm);
    // 把输入的属性设置终端上
    tcsetattr(0, 0, &tm);
    // 读取用户输入的一个字符
    int ch = getchar();
    // 恢复正常输入
    tcsetattr(0, 0, &tm_old);
    return ch;
}

void key_control()
{
    int ch;
    while (1)
    {
        ch = getch();
        if (ch == 'q' || ch == 'Q')
        {
            break;
        }
        else if (ch == '\r')
        {
            printf("down \n");
        }
        else if (ch == '\33')
        {
            ch = getch();
            if (ch == '[')
            {
                ch = getch();
                switch (ch)
                {
                case 'A':
                    printf("up \n");
                    break;
                case 'B':
                    printf("down \n");
                    break;
                case 'C':
                    printf("right \n");
                    break;
                case 'D':
                    printf("left \n");
                    break; // 文具
                }
            }
        }
    }
}
int main()
{
    key_control();
}